﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using negocios;
using objetos;
using publico;
using System.Transactions;

namespace softsales.pagina.veiculo
{
    public partial class veiculo_formulario : System.Web.UI.Page
    {

        // VEICULO
        BLL_TB_VEICULO b_tb_veiculo = new BLL_TB_VEICULO();
        OBJ_TB_VEICULO o_tb_veiculo = new OBJ_TB_VEICULO();


        // CADASTRO
        OBJ_TB_CADASTRO o_tb_cadastro = new OBJ_TB_CADASTRO();
        BLL_TB_CADASTRO b_tb_cadastro = new BLL_TB_CADASTRO();

        // VEICULO CADASTRO
        BLL_TB_VEICULO_CADASTRO b_tb_veiculo_cadastro = new BLL_TB_VEICULO_CADASTRO();
        OBJ_TB_VEICULO_CADASTRO o_tb_veiculo_cadastro = new OBJ_TB_VEICULO_CADASTRO();

        //dropdownlist

        BLL_TB_VEICULO_CABINE b_tb_veiculo_cabine = new BLL_TB_VEICULO_CABINE();
        BLL_TB_VEICULO_CATEGORIA b_tb_veiculo_categoria = new BLL_TB_VEICULO_CATEGORIA();
        BLL_TB_VEICULO_COMBUSTIVEL b_tb_veiculo_combustivel = new BLL_TB_VEICULO_COMBUSTIVEL();
        BLL_TB_VEICULO_CONDICAO b_tb_veiculo_condicao = new BLL_TB_VEICULO_CONDICAO();
        BLL_TB_VEICULO_ESPECIE b_tb_veiculo_especie = new BLL_TB_VEICULO_ESPECIE();
        BLL_TB_VEICULO_MARCA b_tb_veiculo_marca = new BLL_TB_VEICULO_MARCA();
        BLL_TB_VEICULO_MODELO b_tb_veiculo_modelo = new BLL_TB_VEICULO_MODELO();
        BLL_TB_VEICULO_NATUREZA_RESTRICAO b_tb_veiculo_natureza_restricao = new BLL_TB_VEICULO_NATUREZA_RESTRICAO();
        BLL_TB_VEICULO_TIPO b_tb_veiculo_tipo = new BLL_TB_VEICULO_TIPO();
        BLL_TB_VEICULO_TRACAO b_tb_veiculo_tracao = new BLL_TB_VEICULO_TRACAO();
        BLL_TB_COR b_tb_cor = new BLL_TB_COR();
        BLL_TB_UF b_tb_uf = new BLL_TB_UF();

        public string id_cliente { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (PUB_SESSAO.Logado())
            {
                if (!IsPostBack)
                {                    

                    b_tb_veiculo_cabine.PreencheControle(DDL_ID_CABINE, true);
                    b_tb_veiculo_categoria.PreencheControle(DDL_ID_CATEGORIA, true);
                    b_tb_veiculo_combustivel.PreencheControle(DDL_ID_COMBUSTIVEL, true);
                    b_tb_veiculo_condicao.PreencheControle(DDL_ID_CONDICAO, true);
                    b_tb_veiculo_especie.PreencheControle(DDL_ID_ESPECIE, true);
                    b_tb_veiculo_marca.PreencheControle(DDL_ID_MARCA, true);
                    b_tb_veiculo_modelo.PreencheControle(DDL_ID_MODELO, true);
                    b_tb_cor.PreencheControle(DDL_ID_COR, true);
                    b_tb_veiculo_natureza_restricao.PreencheControle(DDL_ID_NATUREZA_RESTRICAO, true);
                    b_tb_veiculo_tipo.PreencheControle(DDL_ID_TIPO, true);
                    b_tb_veiculo_tracao.PreencheControle(DDL_ID_TRACAO, true);
                    b_tb_uf.PreencheControle(DDL_ID_UF, true);

                    if (Request["id_cliente"] != null)
                    {
                        id_cliente = Request["id_cliente"].ToString();
                        PreencheCliente(id_cliente);
                        
                    }

                    for (int i = 1980;  i <= 2020; i++)
                    {
                        DDL_ANO_FABRICACAO.Items.Add(i.ToString());
                        DDL_MODELO_FABRICACAO.Items.Add(i.ToString());
                    }

                    if (Request["id"] != null)
                    {
                        LBL_TITULO_PAGINA.Text = "Editar Veículo";
                        Editar(Request["id"].ToString());
                    }
                    else
                    {
                        LBL_TITULO_PAGINA.Text = "Incluir Veículo";

                        TXT_DT_CADASTRO.Text = DateTime.Now.ToShortDateString();
                        TXT_DT_CADASTRO.Enabled = false;

                    }




                }
                else
                {

                    if (Session["id_cadastro"] != null)
                    {
                        int id_cadastro = Convert.ToInt32(Session["id_cadastro"].ToString());

                        o_tb_cadastro = b_tb_cadastro.SelecionarObjetoPorId(id_cadastro);

                        // CLIENTE

                        TXT_ID_CLI_FOR.Text = o_tb_cadastro.id.ToString();
                        TXT_NOME_CLI_FOR.Text = o_tb_cadastro.nome.ToString();
                        TXT_CNPJ_CPF.Text = o_tb_cadastro.cnpj_cpf.ToString();


                        Session.Remove("id_cadastro");

                    }
                }


            }
        }

        private void PreencheCliente(String id)
        {
            o_tb_cadastro = b_tb_cadastro.SelecionarObjetoPorId(Convert.ToInt32(id));

            TXT_ID_CLI_FOR.Text = o_tb_cadastro.id.ToString();
            TXT_NOME_CLI_FOR.Text = o_tb_cadastro.nome.ToString();
            TXT_CNPJ_CPF.Text = o_tb_cadastro.cnpj_cpf.ToString();
        }

        private void Editar(String id)
        {
            o_tb_veiculo = b_tb_veiculo.SelecionarObjetoPorId(Convert.ToInt32(id));

            HF_ID.Value = o_tb_veiculo.id.ToString();
            TXT_ID_CLI_FOR.Text = o_tb_veiculo.id_cadastro.ToString();
            TXT_CNPJ_CPF.Text = o_tb_veiculo.Tb_cadastro.cnpj_cpf.ToString();
            TXT_NOME_CLI_FOR.Text = o_tb_veiculo.Tb_cadastro.nome.ToString();

            DDL_ID_CABINE.SelectedValue = o_tb_veiculo.id_cabine.ToString();
            DDL_ID_CATEGORIA.SelectedValue = o_tb_veiculo.id_categoria.ToString();
            DDL_ID_COMBUSTIVEL.SelectedValue = o_tb_veiculo.id_combustivel.ToString();
            DDL_ID_CONDICAO.SelectedValue = o_tb_veiculo.id_condicao.ToString();
            DDL_ID_COR.SelectedValue = o_tb_veiculo.id_cor.ToString();
            DDL_ID_ESPECIE.SelectedValue = o_tb_veiculo.id_especie.ToString();
            DDL_ID_MARCA.SelectedValue = o_tb_veiculo.id_marca.ToString();
            DDL_ID_MODELO.SelectedValue = o_tb_veiculo.id_modelo.ToString();
            DDL_ID_NATUREZA_RESTRICAO.SelectedValue = o_tb_veiculo.id_natureza_restricao.ToString();
            DDL_ID_TIPO.SelectedValue = o_tb_veiculo.id_tipo.ToString();
            DDL_ID_TRACAO.SelectedValue = o_tb_veiculo.id_tracao.ToString();
            TXT_CHASSI.Text = o_tb_veiculo.chassi.ToString();
            TXT_KM.Text = o_tb_veiculo.km.ToString();
            TXT_PLACA.Text = o_tb_veiculo.placa.ToString();
            DDL_ID_UF.SelectedValue = o_tb_veiculo.id_uf.ToString();

            TXT_DT_CADASTRO.Text = PUB_FUNCOES.FormataDataBR(o_tb_veiculo.dt_cadastro.ToString());
            TXT_DT_CADASTRO.Enabled = false;

            DDL_ANO_FABRICACAO.SelectedValue = o_tb_veiculo.ano_fabricacao.ToString();
            DDL_MODELO_FABRICACAO.SelectedValue = o_tb_veiculo.modelo_fabricacao.ToString();

            
        }

        protected void BTN_SALVAR_Click(object sender, EventArgs e)
        {
            string msg = string.Empty;
            try
            {

                                
                using (TransactionScope scope = new TransactionScope())
                {

                    if (DDL_ID_MARCA.SelectedValue != string.Empty && DDL_ID_MODELO.SelectedValue != string.Empty && TXT_ID_CLI_FOR.Text != string.Empty
                 && DDL_ID_CATEGORIA.SelectedValue != string.Empty && DDL_ID_UF.SelectedValue != string.Empty)
                    {

                        o_tb_veiculo.id_cadastro = Convert.ToInt32(TXT_ID_CLI_FOR.Text);

                        if (DDL_ID_CABINE.SelectedValue != string.Empty)
                            o_tb_veiculo.id_cabine = Convert.ToInt32(DDL_ID_CABINE.SelectedValue);

                        if (DDL_ID_CATEGORIA.SelectedValue != string.Empty)
                            o_tb_veiculo.id_categoria = Convert.ToInt32(DDL_ID_CATEGORIA.SelectedValue);

                        if (DDL_ID_COMBUSTIVEL.SelectedValue != string.Empty)
                            o_tb_veiculo.id_combustivel = Convert.ToInt32(DDL_ID_COMBUSTIVEL.SelectedValue);

                        if (DDL_ID_CONDICAO.SelectedValue != string.Empty)
                            o_tb_veiculo.id_condicao = Convert.ToInt32(DDL_ID_CONDICAO.SelectedValue);

                        if (DDL_ID_COR.SelectedValue != string.Empty)
                            o_tb_veiculo.id_cor = Convert.ToInt32(DDL_ID_COR.SelectedValue);

                        if (DDL_ID_ESPECIE.SelectedValue != string.Empty)
                            o_tb_veiculo.id_especie = Convert.ToInt32(DDL_ID_ESPECIE.SelectedValue);

                        if (DDL_ID_MARCA.SelectedValue != string.Empty)
                            o_tb_veiculo.id_marca = Convert.ToInt32(DDL_ID_MARCA.SelectedValue);

                        if (DDL_ID_MODELO.SelectedValue != string.Empty)
                            o_tb_veiculo.id_modelo = Convert.ToInt32(DDL_ID_MODELO.SelectedValue);

                        if (DDL_ID_NATUREZA_RESTRICAO.SelectedValue != string.Empty)
                            o_tb_veiculo.id_natureza_restricao = Convert.ToInt32(DDL_ID_NATUREZA_RESTRICAO.SelectedValue);

                        if (DDL_ID_TIPO.SelectedValue != string.Empty)
                            o_tb_veiculo.id_tipo = Convert.ToInt32(DDL_ID_TIPO.SelectedValue);

                        if (DDL_ID_TRACAO.SelectedValue != string.Empty)
                            o_tb_veiculo.id_tracao = Convert.ToInt32(DDL_ID_TRACAO.SelectedValue);
                        o_tb_veiculo.chassi = TXT_CHASSI.Text;
                        o_tb_veiculo.km = TXT_KM.Text;
                        o_tb_veiculo.placa = TXT_PLACA.Text;

                        if (DDL_ID_UF.SelectedValue != string.Empty)
                            o_tb_veiculo.id_uf = Convert.ToInt32(DDL_ID_UF.SelectedValue);

                        if (DDL_ANO_FABRICACAO.SelectedValue != string.Empty)
                            o_tb_veiculo.ano_fabricacao = Convert.ToInt32(DDL_ANO_FABRICACAO.SelectedValue);

                        if (DDL_MODELO_FABRICACAO.SelectedValue != string.Empty)
                            o_tb_veiculo.modelo_fabricacao = Convert.ToInt32(DDL_MODELO_FABRICACAO.SelectedValue);




                        if (HF_ID.Value != string.Empty)
                        {

                            o_tb_veiculo.dt_atualizacao = DateTime.Now;
                            o_tb_veiculo.id = Convert.ToInt32(HF_ID.Value);
                            b_tb_veiculo.Alterar(o_tb_veiculo);
                            msg = PUB_MENSAGEM.MSG_ALTERACAO;


                        }
                        else
                        {
                            o_tb_veiculo.id_usuario = PUB_SESSAO.Id;
                            o_tb_veiculo.dt_cadastro = DateTime.Now;
                            b_tb_veiculo.Incluir(o_tb_veiculo);
                             msg = PUB_MENSAGEM.MSG_INCLUSAO;

                        }



                        Master.MSG_ALERTA(msg, "default.aspx", false);

                        scope.Complete();

                        scope.Dispose();
                    }

                }

            }
            catch (Exception ex)
            {
                msg = "Erro ao tentar salvar o veículo detalhe do erro - " + ex.Message.ToString();
                Master.MSG_ALERTA(msg);
            }
            finally
            {
               
            }
         


        }

        protected void BTN_CANCELAR_Click(object sender, EventArgs e)
        {
            Response.Redirect("default.aspx", false);
        }

        protected void DDL_ID_MARCA_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDL_ID_MARCA.SelectedValue != string.Empty) 
            b_tb_veiculo_modelo.PreencheControle(DDL_ID_MODELO, string.Format("id_marca={0}",DDL_ID_MARCA.SelectedValue ), "desc_veiculo_modelo",true);
        }
        
      
    }
}